Resultados de experiencia con alumnos

Los alumnos se dividieron en 2 grupos:

  • El grupo "Martes" (experimental) recibió la versión completa del entorno.
  • El grupo "Jueves" (control) recibió recibió el entorno configurado sin interactividad, herramientas de monitoreo, ni depuración.

El listado completo de ejercicios puede verse acá: https://richom.github.io/pbits-exercises/

1. ¿Cuál fue el progreso de los 2 grupos?

❋ Estoy estimando el progreso como la cantidad de ejercicios resueltos sobre el total.
❋ Si bien se puede ver que el progreso del grupo "Martes" fue en general superior, donde realmente se ve una diferencia es en el último encuentro.

2. En cada encuentro, ¿cuántos ejercicios resolvió cada alumno?

❋ Esto es compatible con el gráfico anterior: se puede ver cómo en los primeros encuentros ambos grupos resolvieron en promedio la misma cantidad de ejercicios pero el grupo de los "Jueves" cae más abruptamente conforme avanzan los encuentros.

3. ¿Cuánto tiempo llevó resolver cada ejercicio?

❋ Algunas secuencias de ejercicios son incrementales, es decir que se puede reutilizar gran parte de la solución al ejercicio anterior. Por eso puede haber casos donde un ejercicio en teoría más complejo termina teniendo menor tiempo de resolución que su predecesor.
❋ Parece que con los primeros ejercicios el tiempo de resolución es muy similar para ambos grupos pero conforme se avanza en dificultad comienzan a aparecer diferencias. Habría que ver si esta tendencia se mantiene con ejercicios más complejos.

4. ¿Cuán complejo es cada ejercicio?

❋ Hasta el ejercicio 34 fueron resueltos por ambos grupos.
❋ Del 35 al 54 sólo fueron resueltos por el grupo Martes.
❋ Y del 55 en adelante ningún grupo llegó a resolver ejercicios.

5. ¿Cuán grandes son las soluciones a cada ejercicio?

❋ Para estimar el tamaño estamos midiendo la cantidad de bloques usados en cada una de las soluciones a los ejercicios.

6. ¿Cuán activos estuvieron los alumnos durante los encuentros?

❋ Para estimar el nivel de actividad de cada alumno estamos calculando: working_seconds / total_seconds.
❋ IMPORTANTE: total_seconds es la sumatoria del tiempo total del encuentro (incluyendo sólo los encuentros que el alumno haya asistido). working_seconds es el resultado de substraer del total aquellos tiempos muertos donde no se registraron eventos durante un período mayor a 1 min.
❋ Un valor cercano a 1 implica que el alumno no se distrajo en ningún momento, y un valor cercano a 0 significa que perdió el tiempo.

7. ¿Cuán eficientes fueron los alumnos?

❋ Acá calculamos, para cada alumno, la cantidad de ejercicios que pudo resolver por hora.
❋ En el resumen se ve que en promedio la eficiencia fue muy parecida entre ambos grupos. Sin embargo, cuando se analiza cada encuentro por separado se puede observar que aunque en el primer encuentro el grupo "Jueves" muestra una eficiencia superior, en los próximos encuentros su eficiencia media está siempre por debajo del "Martes", incrementándose la brecha sobre todo en el último encuentro (donde la eficiencia del grupo "Martes" fue más del triple que el "Jueves").
❋ También es notable lo rápido que baja la eficiencia en ambos grupos. Tiene sentido considerando el incremento en dificultad de los ejercicios.

8. Para cada ejercicio, ¿cuántas modificaciones se hicieron al programa?

❋ Este gráfico es muy parecido al anterior que muestra el tiempo de resolución de cada ejercicio. Tiene sentido que se parezcan considerando que cada modificación lleva tiempo...

9. Para cada ejercicio, ¿cuántas ejecuciones se hicieron al programa?

❋ Obviamente el grupo de los "Martes" tuvo muchas más ejecuciones que los "Jueves".

10. Para cada ejercicio, ¿cuál fue el tiempo entre modificaciones del programa?

❋ Cada cambio al programa provoca una compilación automática. En este caso estamos midiendo sólo compilaciones exitosas, los errores de compilación son excluidos (igual son minoría: apenas 0.3%)
❋ El tiempo entre compilaciones es muy similar tanto entre ejercicios como entre grupos, lo cual parece sugerir que los alumnos trabajaron aproximadamente al mismo ritmo.

11. Para cada ejercicio, ¿cuál fue el tiempo entre ejecuciones del programa?

❋ Acá la diferencia es esperable porque el grupo de los Jueves tenía configurado el entorno sin interactividad. Entonces, cada ejecución del programa tuvo que provenir del usuario haciendo click en el botón de "Ejecutar". En cambio, los alumnos de los Martes tenían configurado el entorno de forma que cada cambio al programa se ejecute automáticamente en el robot.
❋ Aunque sea un resultado obvio me parece importante destacarlo para mostrar la diferencia que implica la interactividad en la forma de trabajar: el costo de probar los programas es mucho menor, entonces tenés ejecuciones más frecuentes, rápidas, y más progreso.

12. Para cada ejercicio, ¿cuál fue el tiempo hasta la primer ejecución del programa?

❋ Lógicamente, el grupo de los "Martes" tardó en general muchísimo menos en ejecutar el programa por primera vez.
❋ Un caso llamativo es el primer ejercicio que en el grupo de los "Martes" tiene un valor mucho mayor que el resto. Supongo que se deberá a que los alumnos estaban empezando a familiarizarse con el entorno y tardaron en conectar el arduino. Pero ya en los ejercicios siguientes lo dejaron conectado mientras trabajaban en el programa.
❋ Este gráfico puede ser útil para mostrar que el tiempo entre empezar a trabajar en resolver un problema hasta tener un programa corriendo en el robot es mínimo (segundos vs minutos).